﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RecursosHumanos_
{
    //Genericas
    class BasicaComDescricao
    {
        public int id { get; set; }
        public string descricao { get; set; }
    }

    class BasicaComNome
    {
        public int id { get; set; }
        public string nome { get; set; }
    }

    class Ocorrencia : BasicaComDescricao
    {
        public bool? positivo { get; set; }
    }
    //

    class Pessoa
    {
        public int idPessoa { get; set; }
        public string nome { get; set; }
        public string cpf_cnpj { get; set; }
        public bool tipo { get; set; }              //(0)física ou jurídica(1)
        public string sexo { get; set; }            
        public DateTime nascimento { get; set; }    //ou fundação em caso de pessoa jurídica
        
        public Pessoa()
        {
            nascimento = new DateTime();
        }

        public int Idade()
        {
            return Idade(DateTime.Now);
        }

        public int Idade(DateTime referencia)
        {
            return referencia.Subtract(nascimento).Days;
        }
    }

    class Usuario
    {
        public int idUsuario { get; set; }
        public Pessoa pessoa { get; set; }
        public string nome { get; set; }
        public string senha { get; set; }
        public DateTime ultimoAcesso { get; set; }
        public bool ativo { get; set; }

        public Usuario()
        {
            pessoa = new Pessoa();
            ultimoAcesso = new DateTime();
        }
    }
    
    class Cidade
	{
		public int idCidade { get; set; }
        public int nome { get; set; }
        public string uf { get; set; }
	}

    class Bairro
    {
        public int idBairro { get; set; }
        public string nome { get; set; }
        public Cidade cidade { get; set; }
    }

    class Endereco
    {
        public int idEndereco { get; set; }
        public Pessoa pessoa { get; set; }
        public string logradouro { get; set; }
        public string numero { get; set; }
        public int cep { get; set; }
        public Bairro bairro { get; set; }
        //public Cidade cidade { get; set; }
        public bool ativo { get; set; }

        public Endereco()
        {
            pessoa = new Pessoa();
            bairro = new Bairro();
            //cidade = new Cidade();
        }
    }

    class EnderecoE//letronico
    {
        public int idEnderecoE { get; set; }
        public Pessoa pessoa { get; set; }
        public bool tipo { get; set; }                  //(0)e-mail e (1)página
        public string endereco_pagina { get; set; }
        public bool ativo { get; set; }

        public EnderecoE()
        {
            pessoa = new Pessoa();
        }
    }

    class TelefoneTipo
    {
        public int idTelefoneTipo { get; set; }
        public string descricao { get; set; }
    }

    class Telefone
    {
        public int idTelefone { get; set; }
        public Pessoa pessoa { get; set; }
        public TelefoneTipo tipo { get; set; }          //(0)e-mail e (1)página
        public int ddd { get; set; }
        public int numero { get; set; }
        public string contato { get; set; }
        public string observacao { get; set; }
        public bool ativo { get; set; }

        public Telefone()
        {
            pessoa = new Pessoa();
            tipo = new TelefoneTipo();
        }
    }

    class Funcao
    {
        public int idFuncao { get; set; }
        public string nome { get; set; }
    }

    class Departamento
    {
        public int idDepartamento { get; set; }
        public string nome { get; set; }
        public string email { get; set; }
        public Funcionario responsavel { get; set; }
        public bool ativo { get; set; }

        public Departamento()
        {
            responsavel = new Funcionario();
        }
    }

    class Funcionario
    {
        public int idFuncionario { get; set; }
        public Pessoa pessoa { get; set; }
        public DateTime entrada { get; set; }
        public DateTime saida { get; set; }
        public Funcao funcao { get; set; }
        public Departamento departamento { get; set; }
        public Funcionario superior { get; set; }
        public decimal salario { get; set; }
        public string email { get; set; }
        public string ramal { get; set; }
        public bool ativo { get; set; }
        
        public Funcionario()
        {
            pessoa = new Pessoa();
            entrada = new DateTime();
            saida = new DateTime();
            superior = new Funcionario();
        }
    }

    class FuncionarioOcorrencia : Ocorrencia
    {
        public Funcionario funcionario { get; set; }

        public FuncionarioOcorrencia()
        {
            funcionario = new Funcionario();
        }
    }

    class Cliente
    {
        public int idCliente { get; set; }
        public Pessoa pessoa { get; set; }

        public Cliente()
        {
            pessoa = new Pessoa();
        }
    }

    class ClienteOcorrencia : Ocorrencia
    {
        public Cliente cliente { get; set; }

        public ClienteOcorrencia()
        {
            cliente = new Cliente();
        }
    }
}
